In many computing environments it can be desirable to analyze and manipulate information through the coordinated use of more than one software application. For example, in a business environment it may be desirable to process information using multiple applications from within an “office suite” such as Microsoft Office. A word processing application such as Microsoft Word or a presentation generating application such as Microsoft PowerPoint can be used to prepare a report or a presentation based on numeric results calculated by a spreadsheet application such as Microsoft Excel. Similarly, in a medical environment a radiologist using a PACS application to interpret an MRI study may wish to switch to a separate peer review application so as to record a peer review of another radiologist's interpretation regarding the MRI study.
In general, the coordinated use of multiple software applications to process information requires the steps of suspending a first application, transferring information from the first application to a second application, and initiating and/or switching to the second application.
A number of methods are known for switching control and transferring information between unrelated applications. By far the most common method is “cut and paste,” whereby a user selects alphanumeric information from a first application, “cuts” or “copies” it to a temporary storage location, often referred to as the “clipboard,” and then “pastes” it into a location within a second application. This approach is almost universal, since it does not require that the two applications have any specific knowledge about each other. However, it is labor intensive and time consuming, since a user must manually take the steps of selecting and copying the information from the first application, initiating and/or switching to the second application, and then pasting the information into the second application.
Many applications intentionally make selected information available to other applications by storing the selected information in a file stored in a well defined location. The file typically has a well defined name and the information is typically stored in a standard format, such as ASCII text (.txt) or XML, that can easily be interpreted by unrelated applications. In such cases, a second, unrelated application can obtain desired information from the first application by simply reading the file stored by the first application. All that is required is that the application receiving the information be aware of the name, formatting, and location of the file containing the information. However, this approach is still labor intensive and time consuming, since it typically remains necessary for a user to manually suspend use of the first application, initiate and/or switch to the second application, and initiate reading by the second application of the information-containing file created by the first application.
Another approach to communicating information between applications is to use standard interprocess communication protocols. A category of interprocess protocols called Component Object Module (COM) protocols includes Object Linking and Embedding (OLE), OLE-Automation, Active-X, COM+, and DCOM. Other interprocess protocols include Microsoft .NET and various web services provided through the Windows Communication Foundation (WCF). Such protocols can be used either in a direct mode to simply pass information between applications, or in an automated mode whereby one application can be accessed from within another application. For example, by using OLE Automation or Microsoft .NET an image created by a graphical application can under certain circumstances be embedded within a word processing application in such a way that double-clicking on the image within the word processing application automatically switches to and/or initiates the graphical application, and presents the image in the graphical application ready for further graphical manipulation.
When used in a direct mode, transfer of information using interprocess protocols such as COM typically still require manual suspension of the first application, initiating or switching to the second application, and initiation of the information transfer. Using an interprocess protocol in automated mode to imbed one application within another can eliminate the need for these separate, manual steps. However, such automated use of interprocess protocols typically requires an extensive programming effort so as place one application in direct communication with the other. In cases where it is desirable for an application to coordinate with a plurality of other applications, the required programming effort can be prohibitive, since each of the plurality of other applications may support a different interprocess protocol.